{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys\n",
    "sys.path.append(\"../\")\n",
    "from initial_dataSet import DataSet\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.cluster import KMeans\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import torch\n",
    "\n",
    "# 解决中文显示问题\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "save_list = ('a0910/', 'a2017/', 'junyi/', 'math_ec/')\n",
    "dataSet_list = ('ASSIST_0910', 'ASSIST_2017','JUNYI', 'MathEC')\n",
    "models=['DINA','NCD','CDGK']\n",
    "x_label=['poor','medium','good','excellent']\n",
    "model_data={}\n",
    "for model in models:\n",
    "    data_list=[]\n",
    "    for dataName in dataSet_list:\n",
    "        data=[]\n",
    "        data_i=pd.read_csv('./output/cluster/'+model+'/'+dataName+'_cluster.csv')\n",
    "        a=data_i.loc[:,['cluster','mean proficiency']]\n",
    "\n",
    "        for j in range(4):\n",
    "            data.append(a[a['cluster']==j]['mean proficiency'].to_list())\n",
    "\n",
    "        data_list.append(data)\n",
    "    model_data[model]=data_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 720x864 with 12 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_label=['ASSIST0910','ASSIST2017','JunYi','MathEC']\n",
    "titles=['DINA','NCDM','CDGK','ICD-A','ICD+']\n",
    "x_label=['poor','medium','good','excellent']\n",
    "\n",
    "plt.rcParams['xtick.direction'] = 'in'\n",
    "plt.rcParams['ytick.direction'] = 'in'\n",
    "\n",
    "fig,axes = plt.subplots(3,4,sharey=True,figsize=(10,12))\n",
    "plt.subplots_adjust(wspace=0.09,hspace=0.08)\n",
    "\n",
    "\n",
    "for j in range(3): # 模型\n",
    "    data_j=model_data[models[j]]\n",
    "    for i in range(4): # 数据集\n",
    "        data_i=data_j[i]\n",
    "        # axes[j,i].set_ylim((0.0,1.0))\n",
    "        axes[j,i].grid(axis='y',linestyle = '-',zorder=0)\n",
    "        axes[j,i].boxplot(data_i,labels=x_label,showfliers=False)\n",
    "        axes[j,i].set_xticklabels([])\n",
    "        axes[j,i].set_yticks(np.array([0,0.2,0.4,0.6,0.8,1]))\n",
    "        axes[j,i].set_yticklabels(np.array([0,0.2,0.4,0.6,0.8,1]),\n",
    "            fontdict={'family':'Times New Roman', 'size': 12})\n",
    "        if j==0:    \n",
    "            axes[j,i].set_title(y_label[i],fontdict={'family':'Times New Roman', 'size': 15})\n",
    "        else:\n",
    "            axes[j,i].set_ylabel(None)\n",
    "        if i==0:\n",
    "            axes[j,i].set_ylabel(titles[j],fontdict={'family':'Times New Roman', 'size': 15})\n",
    "        if j==2:\n",
    "            axes[j,i].set_xticks([1,2,3,4])\n",
    "            axes[j,i].set_xticklabels(x_label,rotation=20,\n",
    "                fontdict={'family':'Times New Roman', 'size': 11})\n",
    "\n",
    "fig.savefig('./output/横box.jpg',dpi=1200,bbox_inches='tight')  \n",
    "plt.show()  "
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "527a93331b4b1a8345148922acc34427fb7591433d63b66d32040b6fbbc6d593"
  },
  "kernelspec": {
   "display_name": "Python 3.8.12 ('pytorch')",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.13"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
